package cn.xiaolang.function.recursion;

import java.util.Scanner;

/**
 * 递归实现：阶乘 
 * 8！= 8*7*6*5*4*3*2*1
 * @author Xiaolang
 *
 */
public class Factorial {

    /**
     * 递归获取数据的阶乘
     * （递归的方法一般都用static修饰，只加载一次，循环调用，不必总是加载浪费资源）
     * @param fact
     * @return
     */
    public static long run(int fact){
        
        if(fact <= 1){
            //数据小于等于1
            return fact;
        }else{
            //数据大于1时，如：8 返回 8*（8-1）*（7-1）。。。递归执行上述run方法的判断
            return fact*run(fact - 1);
        }
    }
    
    public static void main(String[] args) {
        
        while(true){
            System.out.println("please input a num for it's factorial :");
            @SuppressWarnings("resource")
            Scanner input = new Scanner(System.in);
            int num = input.nextInt();
            System.out.println("the num :"+num+",it's factorial is :"+run(num));
            System.out.println();
        }
    }
}
